using System;
using System.Collections;
using System.Text;
using System.Data;
using System.Data.SqlClient;

using Admaco.Data;

namespace Admaco.Data
{
    public class TipoAnalisis : AbstractDataClass
    {
        public const int pcaEstadistico = 1;
        public const int pcaNeuronal = 2;
        public const int maximumLikelihood = 3;
        public const int conexionesLaterales = 4;

        private Int32 idTipoAnalisis;
        private String nombre;

        public Int32 IdTipoAnalisis
        {
            get { return idTipoAnalisis; }
            set { idTipoAnalisis = value; }
        }
        public String Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }

        /// <summary>
        /// Obtiene un tipo de analisis a partir de su identificador
        /// </summary>
        /// <param name="id">Identificador de origen</param>
        public override void get(int id)
        {
            try
            {
                ArrayList paramsCollection = new ArrayList();

                SqlParameter sqlParameter;
                sqlParameter = new SqlParameter("@idTipoAnalisis", SqlDbType.Int);
                sqlParameter.Value = id;
                paramsCollection.Add(sqlParameter);

                DataTable dt = getDataTable("SELECT * FROM TipoAnalisis WHERE idTipoAnalisis = @idTipoAnalisis", paramsCollection);

                if (dt.Rows.Count > 0)
                {
                    DataRow dr = dt.Rows[0];
                    idTipoAnalisis = (int)dr["idTipoAnalisis"];
                    nombre = ((String)dr["nombre"]).Trim();
                }
            }
            catch (Exception e)
            {
                throw new DataAccessException("Error al obtener objeto tipo de analisis de la base de datos: " + e);
            }
        }

        /// <summary>
        /// Obtiene una coleccion de los tipos de analisis
        /// </summary>
        /// <returns>
        /// ArrayList de tipos de analisis
        /// </returns>
        public override ArrayList getAll()
        {
            try
            {
                ArrayList tipoAnalisiss = new ArrayList();

                DataTable dt = getDataTable("SELECT * FROM TipoAnalisis");

                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        TipoAnalisis tipoAnalisis = new TipoAnalisis();
                        tipoAnalisis.idTipoAnalisis = (int)dr["idTipoAnalisis"];
                        tipoAnalisis.nombre = ((String)dr["nombre"]).Trim();

                        tipoAnalisiss.Add(tipoAnalisis);
                    }
                }

                return tipoAnalisiss;
            }
            catch (Exception e)
            {
                throw new DataAccessException("Error al obtener objetos tipo de analisis de la base de datos: " + e);
            }
        }

        public SqlDataAdapter getAllSqlDataAdapter()
        {
            try
            {
                SqlDataAdapter dt = getSqlDataAdapter("SELECT * FROM TipoAnalisis");

                return dt;
            }
            catch (Exception e)
            {
                throw new DataAccessException("Error al obtener objetos tipo de analisis de la base de datos: " + e);
            }
        }

        public override void delete()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        public override void save()
        {
            throw new Exception("The method or operation is not implemented.");
        }
    }
}

